************************************************ *** Welcome to the HELIOS Radiosity Renderer *** ************************************************ Version: 1.03A Release Date: 96/04/01 1. Introduction Radiosity is an advanced computer graphics technique that you can use to synthesize photorealistic images without ray tracing. HELIOS brings this new and exciting technology to your personal desktop computer. Included with this release is the full C++ source code for four separate versions of HELIOS. The code is derived from that presented in the book: Ashdown, I. 1994. "Radiosity: A Programmer's Perspective," New York, NY: John Wiley & Sons, Inc. (See Section 6, "Read This Book!" for further details.) The source code is included for those programmers interested in experimenting with radiosity methods as an alternative to ray tracing techniques. It may be freely copied, redistributed, and/or modified for personal, non-commercial use ONLY, provided the copyright notice is included with all source code files. 2. What is Radiosity? There are two approaches to generating photorealistic images -- digital pictures that are difficult to distinguish from real photographs -- in computer graphics. The first approach involves ray-tracing techniques; the second approach is radiosity. Radiosity is in a sense the complement of ray tracing. Ray-tracing techniques excel in the rendition of point light sources, specular reflections, and refraction effects. Radiosity methods accurately model area light sources, diffuse reflections, color bleeding effects, and realistic shadows. Whether you choose ray tracing or radiosity will depend in part on what effects you consider to be more important in your images. Radiosity has the advantage of view independence. Using ray-tracing techniques, the number of ray-surface intersection calculations can increase geometrically with the complexity of the scene. Change your point of view and you typically have to start from scratch to generate a new image. With radiosity, however, you only need to perform the lighting calculations once for a given environment. Once they have been completed, you can quickly render a view of the environment as seen from any position and orientation. Folklore has it that you need a high-powered graphics workstation or even a supercomputer to experiment with radiosity rendering techniques. Not so! All you need is an IBM PC-AT clone with an 80386 CPU and a math coprocessor, 4 megabytes of RAM, and a 256-color video display adapter. Of course, a faster machine is always better. Using an off-the-shelf desktop computer with a 66-MHz 80486 CPU, you can create photorealistic images in ... are you ready for this? ... less than a minute. Compared to the hours typically needed to ray trace photorealistic images, there is something to be said for radiosity techniques. To see what HELIOS is capable of, take a look at the demonstration images DEMO_256.BMP (256 colors) or DEMO_16M.BMP (24-bit color). 3. Using HELIOS HELIOS is a Microsoft Windows program that has the following hardware and software requirements: * An IBM PC-AT clone with an 80386 CPU and a math coprocessor (an 80486 or Pentium CPU is recommended. * A color video display capable of displaying at least 256 colors. * Microsoft Windows 3.1 or Windows 95. Unlike many MS-Windows programs, you do *not* need to modify any system files (such as WIN.INI or AUTOEXEC.BAT) in order to run HELIOS, nor do you have to install anything. In fact, all you have to do is to store the following files in the same directory on your hard disk or a floppy diskette: APPLE.ENT CEILING.ENT CHAIR.ENT FLOOR.ENT HELIOS.EXE HELIOS.HLP LIGHT_1.ENT LIGHT_2.ENT PICTURE.ENT ROOM.WLD SPHERE.ENT WALL.ENT The ROOM.WLD and *.ENT files describe a sample environment that consists of a room with a chair on the floor, a floating apple and an oblate sphere, a picture on the wall, and two fluorescent lighting fixtures that illuminate the room. While this room may not be the most exciting of environments, it clearly demonstrates radiosity's ability to model area light sources, diffuse reflections, color bleeding effects and realistic shadows. Assuming you have stored the files on a floppy diskette: 1. Insert the diskette into your floppy disk drive. 2. Start Microsoft Windows. 3. Choose File from the Program Manager menu bar. 4. Select the Run... menu item. 5. Enter A:HELIOS.EXE in the Command Line edit control. (Substitute the drive letter of your floppy disk drive if necessary.) 6. Press the key or select the OK button. To run HELIOS from the directory C:\HELIOS on your hard disk: 1. Start Microsoft Windows. 2. Choose File from the Program Manager menu bar. 3. Select the Run... menu item. 4. Enter C:\HELIOS\HELIOS.EXE in the Command Line edit control. (Substitute another directory name if necessary.) 5. Press the key or select the OK button. Once HELIOS is up and running, you can: 1. Choose Help from the HELIOS Radiosity Renderer menu bar. 2. Select the Contents menu item. 3. Select the Using HELIOS topic to view instructions on how to use HELIOS. The Using HELIOS topic provides a brief but complete tutorial on how to render the demonstration room in full color and view it from any angle. 4. Four Versions of HELIOS? There are four versions of HELIOS included with this release: HELIOS_C.EXE Cubic tetrahedron HELIOS_H.EXE Hemicube HELIOS_R.EXE Ray casting HELIOS_S.EXE Shading only These executables can be found in the BIN subdirectory (see Section 6, "Release Contents"), and can directly replace HELIOS.EXE in the root directory. 4.1 HELIOS_H.EXE - Hemicube This version is based on the progressive radiosity method. It uses the hemicube method to determine form factors. 4.2 HELIOS_C.EXE - Cubic Tetrahedron This version is also based on the progressive radiosity method. However, it uses the cubic tetrahedron method to determine form factors. Cubic tetrahedrons result in faster execution times (about 25 percent or so) and fewer form-factor aliasing artifacts than do hemicubes. The program HELIOS.EXE in the root directory is really HELIOS_C.EXE. The only difference is that the version number in the "About HELIOS" dialog box has been modified to read "1.03A" instead of "1.03A/CT." 4.3 HELIOS_R.EXE - Ray Casting This version uses ray casting techniques to determine its form factors. It does not employ BSP or any other polygon culling techniques, however, and so it is quite slow in comparison to HELIOS_C.EXE and HELIOS_H.EXE. 4.4 HELIOS_S.EXE - Shading Only This version is *not* a radiosity renderer. Rather, it implements the three-dimensional viewing system, polygon rendering, user interface and other feature needed to implement a fully-functional radiosity renderer. It is only capable of displaying flat-shaded polygons. All of the C++ source code and support files for these programs has been included in this release of HELIOS, as itemized in the next section. See Section 6, "Read This Book!" for further information. 5. Release Contents The complete set of files included with this release consists of: 5.1 Root Directory HELIOS.HLP HELIOS V1.03A on-line help file HELIOS.EXE HELIOS V1.03A MS-Windows 3.1 executable ROOM.WLD Demonstration room environment file APPLE.ENT Demonstration room entity files CEILING.ENT CHAIR.ENT FLOOR.ENT LIGHT_1.ENT LIGHT_2.ENT PICTURE.ENT SPHERE.ENT WALL.ENT README.TXT This file [BC45] Borland C++ Version 4.5 subdirectory [BIN] Binary executables subdirectory [HELP] Help files subdirectory [INCLUDE] HELIOS C++ include files subdirectory [MSVC] Microsoft C++ Version 1.5 subdirectory [SOURCE] HELIOS C++ source code files subdirectory 5.2 Subdirectory BC45 [CUBIC] HELIOS V1.03A/CT IDE file subdirectory [HEMI] HELIOS V1.03A/HC IDE file subdirectory [RAY] HELIOS V1.03A/RC IDE file subdirectory [SHADE] HELIOS V1.03A/SH IDE file subdirectory 5.3 Subdirectory BC45\CUBIC HELIOS_C.IDE Borland C++ IDE file for HELIOS V1.03A/CT 5.4 Subdirectory BC45\HEMI HELIOS_H.IDE Borland C++ IDE file for HELIOS V1.03A/HC 5.5 Subdirectory BC45\RAY HELIOS_R.IDE Borland C++ IDE file for HELIOS V1.03A/RC 5.6 Subdirectory BC45\SHADE HELIOS_S.IDE Borland C++ IDE file for HELIOS V1.03A/SH 5.7 Subdirectory BIN HELIOS_C.EXE HELIOS Version 1.03A/CT executable HELIOS_H.EXE HELIOS Version 1.03A/HC executable HELIOS_R.EXE HELIOS Version 1.03A/RC executable HELIOS_S.EXE HELIOS Version 1.03A/SH executable 5.8 Subdirectory DEMO APPLE.ENT Demonstration room entity files CEILING.ENT CHAIR.ENT FLOOR.ENT LIGHT_1.ENT LIGHT_2.ENT PICTURE.ENT SPHERE.ENT WALL.ENT ROOM.WLD Demonstration room environment file 5.9 Subdirectory HELP GLOSSARY.RTF HELIOS help file glossary (Rich Text Format) HELIOS.HPJ HELIOS help project file HELIOS.HLP HELIOS help file HELIOS.RTF HELIOS help file master (Rich Text Format) WIN_HELP.H HELIOS help include file 5.10 Subdirectory INCLUDE HELIOS C++ include files COLOR.H Colors CT_CLIP.H Cubic tetrahedron element clipping CT_DELTA.H Cubic tetrahedron form factor deltas CT_POLY.H Cubic tetrahedron elements CT_SCAN.H Cubic tetrahedron element scanning CUBIC_T.H Cubic tetrahedrons C_JITTER.H Color jittering ENVIRON.H Environment ERROR.H Error reporting FF_CLIP.H Form factor element clipping FF_DELTA.H Form factor deltas FF_POLY.H Form factor elements FF_SCAN.H Form factor element scanning GAMMA.H Gamma correction GENERAL.H General HC_CLIP.H Hemicube element clipping HC_DELTA.H Hemicube form factor deltas HC_POLY.H Hemicube elements HC_SCAN.H Hemicube element scanning HELIOS.H HELIOS MS-Windows interface HEMICUBE.H Hemicubes INSTANCE.H Instances OCT_QUAN.H Octree color quantization OUT_POLY.H Polygon output PARSE.H Input file parser PATCH3.H 3D patches PROG_RAD.H Progressive radiosity P_CLIP4.H Homogeneous polygon clipping P_RENDER.H Polygon rendering RAD_EQN.H Radiosity equation solver RAY_CAST.H Ray casting RAY_RAD.H Ray-cast radiosity RESOURCE.H HELIOS resource file SURFACE3.H 3D surfaces SYN_CAM.H Synthetic camera TRANSFM3.H 3D transformations VECTOR3.H 3D vectors VECTOR4.H Homogeneous vectors VERTEX4.H Homgeneous vertices VIEW_SYS.H Viewing system WIN_BMAP.H MS-Windows BMP (bitmap) files WIN_META.H MS-Windows metafiles WIN_SBAR.H Scroll bars WIN_TEXT.H MS-Windows text manager WIN_TGA.H Targa (TGA) files 5.11 Subdirectory MSVC [CUBIC] HELIOS V1.03A/CT MAKE file subdirectory [HEMI] HELIOS V1.03A/HC MAKE file subdirectory [RAY] HELIOS V1.03A/RC MAKE file subdirectory [SHADE] HELIOS V1.03A/SH MAKE file subdirectory 5.12 Subdirectory MSVC\CUBIC HELIOS_C.MAK Microsoft C++ MAK file for HELIOS V1.03A/CT 5.13 Subdirectory MSVC\HEMI HELIOS_H.MAK Microsoft C++ MAK file for HELIOS V1.03A/HC 5.14 Subdirectory MSVC\RAY HELIOS_R.MAK Microsoft C++ MAK file for HELIOS V1.03A/RC 5.15 Subdirectory MSVC\SHADE HELIOS_S.MAK Microsoft C++ MAK file for HELIOS V1.03A/SH 5.16 Subdirectory SOURCE HELIOS C++ source code files CT_CLIP.CPP Cubic tetrahedron element clipping CT_DELTA.CPP Cubic tetrahedron form factor deltas CT_SCAN.CPP Cubic tetrahedron element scanning CUBIC_T.CPP Cubic tetrahedrons C_JITTER.CPP Color jittering ENVIRON.CPP Environment ERROR.CPP Error reporting FF_CLIP.CPP Form factor element clipping FF_SCAN.CPP Form factor element scanning GAMMA.CPP Gamma correction HC_CLIP.CPP Hemicube element clipping HC_DELTA.CPP Hemicube form factor deltas HC_SCAN.CPP Hemicube element scanning HELIOS.DEF HELIOS definition file HELIOS.RC HELIOS resource file HELIOS.CPP HELIOS MS-Windows interface HELIOS_C.ICO HELIOS V1.03A/CT icon HELIOS_H.ICO HELIOS V1.03A/HC icon HELIOS_R.ICO HELIOS V1.03A/RC icon HELIOS_S.ICO HELIOS V1.03A/SH icon HEMICUBE.CPP Hemicubes OCT_QUAN.CPP Octree color quantization PARSE.CPP Input file parser PATCH3.CPP 3D patches PROG_RAD.CPP Progressive radiosity P_CLIP4.CPP Homogeneous polygon clipping P_RENDER.CPP Polygon rendering RAD_EQN.CPP Radiosity equation solver RAD_TMP.CPP Dummy radiosity equation solver RAY_CAST.CPP Ray casting RAY_RAD.CPP Ray-cast radiosity SYN_CAM.CPP Synthetic camera TEST_1.CPP Development test program #1 TEST_2.CPP Development test program #2 TEST_3.CPP Development test program #3 TEST_4.CPP Development test program #4 VECTOR3.CPP 3D vectors VIEW_SYS.CPP Viewing system WIN_BMAP.CPP MS-Windows BMP (bitmap) files WIN_HELP.H Online help include file WIN_SBAR.CPP Scroll bars WIN_TGA.CPP Targa (TGA) files 6. Read This Book! The C++ source code included with this release of HELIOS is fully commented. However, it is often difficult to understand the inner workings of a program from the source code comments alone, no matter how well-written they may be. In the case of HELIOS, however, the radiosity-related code has been fully documented. To obtain a copy of this documentation, you can (ahem) buy: Radiosity: A Programmer's Perspective by Ian Ashdown Published by John Wiley & Sons, Inc., New York, NY Paperback, 498 pages with 12 color plates, 1994 ISBN 0-471-30444-1 (without diskette), $39.95 US ISBN 0-471-30488-3 (with 3.5-inch MS-DOS diskette), $54.95 US To order a copy of this book, you can call 1-800-CALL-WILEY in the United States and Canada. You can also order it online from Wiley's Web page (http://www.wiley.com). "Radiosity: A Programmer's Perspective" offers step-by-step guidance for the development of a fully functional, radiosity-based rendering program for Microsoft Windows and other graphical environments, including: * A detailed explanation of radiosity theory and its associated algorithms (no knowledge of higher mathematics required!) * Complete, fully documented, and compiler-independent C++ source code for HELIOS, a radiosity renderer for Microsoft Windows 3.1, Windows 95, and Windows NT (tm). * An extensive guide to the computer graphics radiosity literature. (The version of HELIOS presented in the book employs a simplified user interface, due to lack of space for the source code. The radiosity- related code, however, is identical to that included with this release of HELIOS.) 7. Credits HELIOS was written by: byHeart Software Limited 620 Ballantree Road West Vancouver, B.C. Canada V7S 1W3 Attn: Ian Ashdown, President Web URL: http://www.ledalite.com e-mail: iashdown@ledalite.com Comments and questions are welcome.